package com.ck.system.service;

import com.ck.common.entity.SysRole;
import com.ck.common.entity.SysUserRole;
import com.google.protobuf.ServiceException;

import java.util.List;
import java.util.Set;

/**
 * @author changk
 * @date 2024/11/12 14:28
 */
public interface SysRoleService {
     Set<String> selectRolePermissionByUserId(Long userId);

    /**
     * 查询所有角色
     *
     * @return 角色列表
     */
    List<SysRole> selectRoleAll();

    /**
     * 根据条件分页查询角色数据
     *
     * @param role 角色信息
     * @return 角色数据集合信息
     */
    List<SysRole> selectRoleList(SysRole role);

    /**
     * 根据用户ID查询角色列表
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<SysRole> selectRolesByUserId(Long userId);

    boolean checkRoleNameUnique(SysRole role);

    boolean checkRoleKeyUnique(SysRole role);

    int insertRole(SysRole role);

    void checkRoleAllowed(SysRole role) throws ServiceException;

    void checkRoleDataScope(Long roleId) throws ServiceException;

    int updateRoleStatus(SysRole role);

    int updateRole(SysRole role);

    SysRole selectRoleById(Long roleId);

    int deleteRoleByIds(Long[] roleIds) throws ServiceException;

    int authDataScope(SysRole role);

    int deleteAuthUser(SysUserRole userRole);

    int insertAuthUsers(Long roleId, Long[] userIds);
}
